package database

import (
	"ordersystem/config"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

var db *gorm.DB

// 初始化Mysql数据库的连接池
func InitMysqlConnection() error {
	const connectConfig = config.MYSQL_USERNAME + ":" + config.MYSQL_PASSWORD + "@tcp(" + config.MYSQL_URL + ")/" + config.MYSQL_DATABASE + "?charset=utf8&parseTime=True&loc=Local&timeout=10s&readTimeout=30s&writeTimeout=60s"

	var err error
	db, err = gorm.Open(mysql.Open(connectConfig), &gorm.Config{})

	if err != nil {
		return err
	}

	sqlDB, _ := db.DB()
	// 设置数据库连接池最大连接数
	sqlDB.SetMaxOpenConns(100)
	// 连接池最大允许的空闲连接数，如果没有sql任务需要执行的连接数大于20，超过的连接会被连接池关闭
	sqlDB.SetMaxIdleConns(20)

	return nil
}

// 获取Mysql连接的接口
func GetMysqlConnection() *gorm.DB {
	return db
}
